<?php

/*
 * ***********************************************************************
 Copyright [2011] [PagSeguro Internet Ltda.]

 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
 You may obtain a copy of the License at

 http://www.apache.org/licenses/LICENSE-2.0

 Unless required by applicable law or agreed to in writing, software
 distributed under the License is distributed on an "AS IS" BASIS,
 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 See the License for the specific language governing permissions and
 limitations under the License.
 * ***********************************************************************
 */
require_once '../admin/config/crud.class.php';
require_once './functions.php';
require_once "./PagSeguroLibrary/PagSeguroLibrary.php";
require_once '../admin/config/conexao.class.php';
$con = new conexao(); // instancia classe de conxao
$con->connect(); // abre conexao com o banco
define("PLANO_TRIAL", 5);// constante do ID do plano gratuito

/**
 * Class with a main method to illustrate the usage of the domain class PagSeguroPaymentRequest
 */
class createPaymentRequest
{
	public static function main() 
	{
            $myFile = "logcron.txt";
            $fh = fopen($myFile, 'a+') or die("can't open file");
            $stringData = date("F j, Y, g:i a");
            fwrite($fh, $stringData."\n");
            fclose($fh);
            if(isset ($_POST['post_plan_id'])){ //se está assinando um plano pelo formulário do site
            $myCliente=null;
                //if($_POST['post_plan_id']!=PLANO_TRIAL){
                foreach ($_POST as $key => $value) { //transformando o post em variáveis independentes
                     $$key = $value;
                     //echo $key."=".$value."<br>";
                }
                        
                $consulta = mysql_query("SELECT * FROM ldct_plano WHERE plan_id =".$post_plan_id); // query que busca todos os dados do plano escolhido
                $plano = mysql_fetch_object($consulta);
                
		// Instantiate a new payment request
		$paymentRequest = new PagSeguroPaymentRequest();

		// Sets the currency
		$paymentRequest->setCurrency("BRL");
                $total = number_format($plano->plan_valor, 2, '.', '');//tive que converter o int para float com 2 casas decimais
		// identificador, descrição, quantidade, valor unitário, peso e custos de frete. Os dois últimos parâmetros podem ser omitidos
		$paymentRequest->addItem($plano->plan_id, $plano->plan_nome, 1, $total); 
                
                //preciso pegar o ID da tabela vd_transacao para poder colocar como referência no paymentRequest
                //$consulta_trans = mysql_query("SELECT MAX(trans_id) as current_id FROM vd_transacao"); 
                $consulta_trans = mysql_query("SHOW TABLE STATUS LIKE 'vd_transacao'");
                $transacao = mysql_fetch_object($consulta_trans);
              
                $trans_id = $transacao->Auto_increment;
              
                
		// Sets a reference code for this payment request, it is useful to identify this payment in future notifications.
		$paymentRequest->setReference($trans_id);

		// Sets shipping information for this payment request
		$CODIGO_NAO_ESPECIFICADO  = PagSeguroShippingType::getCodeByType('NOT_SPECIFIED');
		$paymentRequest->setShippingType($CODIGO_NAO_ESPECIFICADO);
		//$paymentRequest->setShippingAddress('01452002', 'Av. Brig. Faria Lima', '1384', 'apto. 114', 'Jardim Paulistano', 'São Paulo', 'SP', 'BRA');
                
                $myCliente = getCliente($post_cpf_cnpj);
                if($myCliente==NULL){//não existe esse cliente no banco
                    //se o cliente não for cadastrado, preciso criar um novo cliente e usuário (ainda inativo)
                    $crud_ldct_cliente = new crud('ldct_cliente');  // instancia classe com as operaçoes crud, passando o nome da tabela como parametro
                    if(!$crud_ldct_cliente->inserir("clie_status,clie_nome,clie_email,clie_telefone,clie_celular,clie_empresa,clie_cpf_cnpj,clie_endereco,clie_cidade,clie_estado,clie_url_acesso, plan_id",
                            "1,'$post_nome','$post_email','$post_telefone','$post_celular','$post_empresa','$post_cpf_cnpj','$post_endereco','$post_cidade','$post_estado','inutilizado','$post_plan_id'") // utiliza a funçao INSERIR da classe crud
                            ):
                        echo "Não foi possível criar este cliente. Entre em contato e informe o erro #222.";
                        exit;//travo o PHP aqui
                    else: //cliente cadstrado, agora posso criar o usuário dele (ainda inativo, pois só ativa quando o PagSeguro cofirma o pagamento
                        /*
                         * aqui o cliente já foi criado, vou pegá-lo
                         */
                        $myCliente = getCliente($post_cpf_cnpj);
                        /*
                         * 2 - master
                           1 - administrador (da conta)
                           0 - normal (criado pelo administrador da conta)
                         */
                        $crud_ldct_usuario = new crud('ldct_usuario');
                        $senhamd5=md5($post_senha);
                        
                        if($_POST['post_plan_id']==PLANO_TRIAL){ //se for plano TRIAL eu já deixo o usuário ativo
                            $ativo_gratuito=1;
                        }else $ativo_gratuito=0;
                        
                        if(!$crud_ldct_usuario->inserir("usua_chave,usua_nome,usua_email,usua_senha,usua_perm,usua_ativo,clie_id",
                            "'$post_usuario','$myCliente->clie_nome','$myCliente->clie_email','$senhamd5',1,$ativo_gratuito,$myCliente->clie_id") // utiliza a funçao INSERIR da classe crud
                            ):
                        echo "Não foi possível criar o usuário. Entre em contato e informe o erro #333.";
                        exit;//travo o PHP aqui
                        else: //cliente foi cadastrado
                        endif;      
                    endif;
                }else{//o cliente já existe
                    echo "Olá".$myCliente->clie_nome." você já possui cadastro. Faça o login.";
                    exit;
                }
                if($_POST['post_plan_id']!=PLANO_TRIAL){ //se nao for o plano gratuito
		// Sets your customer information.
		$paymentRequest->setSender($post_nome, $post_email);

		// Sets the url used by PagSeguro for redirect user after ends checkout process
		$paymentRequest->setRedirectUrl("http://leadcontrolbgp.com.br/site");
                    try
                    {
                            //$credentials = new PagSeguroAccountCredentials("your@email.com", "your_token_here");
                            $credentials = PagSeguroConfig::getAccountCredentials();
                            // Register this payment request in PagSeguro, to obtain the payment URL for redirect your customer.
                            $url = $paymentRequest->register($credentials);
                            $codigo_pagseguro = substr($url, strpos($url, "code=")+5);
                            $now = date("Y-m-d H:i:s");
                            $consulta_clie = mysql_query("SELECT MAX(clie_id) as current_id_cliente FROM ldct_cliente"); 
                            $cliente = mysql_fetch_object($consulta_clie);
                            if($cliente->current_id_cliente==NULL):
                                $clie_id=1;
                             else:
                                $clie_id = $cliente->current_id_cliente;
                             endif;
                            //crio a transação na tabela vd_transacao
                            $crud_vd_transacao = new crud('vd_transacao');  // instancia classe com as operaçoes crud, passando o nome da tabela como parametro
                            $crud_vd_transacao->inserir("trans_data_criacao,trans_data_confirmacao, trans_codigo_pagseguro, trans_status, trans_total, trans_url, clie_id, plan_id",
                                                        "'$now','NULL','$codigo_pagseguro','1','$plano->plan_valor','$url',$clie_id,$plano->plan_id");

    //                        1	Aguardando pagamento: o comprador iniciou a transação, mas até o momento o PagSeguro não recebeu nenhuma informação sobre o pagamento.	 WAITING_PAYMENT
    //                        2	Em análise: o comprador optou por pagar com um cartão de crédito e o PagSeguro está analisando o risco da transação.	 IN_ANALYSIS
    //                        3	Paga: a transação foi paga pelo comprador e o PagSeguro já recebeu uma confirmação da instituição financeira responsável pelo processamento.	 PAID
    //                        4	Disponível: a transação foi paga e chegou ao final de seu prazo de liberação sem ter sido retornada e sem que haja nenhuma disputa aberta.	 AVAILABLE
    //                        5	Em disputa: o comprador, dentro do prazo de liberação da transação, abriu uma disputa.	 IN_DISPUTE
    //                        6	Devolvida: o valor da transação foi devolvido para o comprador.	 REFUNDED
    //                        7	Cancelada: a transação foi cancelada sem ter sido finalizada.	 CANCELLED
                            self::redirectPaymentUrl($url);
                    }
                    catch (PagSeguroServiceException $e)
                    {
                            die($e->getMessage());
                            echo "A transação não foi realizada. Tente novamente  ):";
                    }
                }  else {
                    echo "Cadastro efetuado com sucesso. Faça o login.";
                }
                


////*******************************DAQUI PARA BAIXO É QUANDO O CRON ACHA ALGUMA LICENÇA VENCIDA ***************************************
                
                
                
            }else if($_POST['cron']==1){//SE É UMA REQUISIÇÃO DE COBRANÇA GERADA PELO CRON.PHP
                $consulta = mysql_query("SELECT * FROM ldct_plano WHERE plan_id =".$_POST['plan_id']); // query que busca todos os dados do plano escolhido
                $plano = mysql_fetch_object($consulta);
                
                // Instantiate a new payment request
		$paymentRequest = new PagSeguroPaymentRequest();

		// Sets the currency
		$paymentRequest->setCurrency("BRL");
                $total = number_format($plano->plan_valor, 2, '.', '');//tive que converter o int para float com 2 casas decimais
		// identificador, descrição, quantidade, valor unitário, peso e custos de frete. Os dois últimos parâmetros podem ser omitidos
		$paymentRequest->addItem($plano->plan_id, $plano->plan_nome, 1, $total); 
                
                //preciso pegar o ID da tabela vd_transacao para poder colocar como referência no paymentRequest
                $consulta_trans = mysql_query("SELECT MAX(trans_id) as current_id FROM vd_transacao"); 
                $transacao = mysql_fetch_object($consulta_trans);
                if($transacao->current_id==NULL):
                   $trans_id=1;
                else:
                   $trans_id = $transacao->current_id +1;
                endif;
 
                            
		// Sets a reference code for this payment request, it is useful to identify this payment in future notifications.
		$paymentRequest->setReference($trans_id);

		// Sets shipping information for this payment request
		$CODIGO_NAO_ESPECIFICADO  = PagSeguroShippingType::getCodeByType('NOT_SPECIFIED');
		$paymentRequest->setShippingType($CODIGO_NAO_ESPECIFICADO);
                
                //pego dados do cliente    
                $consulta = mysql_query("SELECT * FROM ldct_cliente WHERE clie_id =".$_POST['clie_id']);
                @$cliente = mysql_fetch_object($consulta);
                
                // Sets your customer information.
		$paymentRequest->setSender($cliente->clie_nome, $cliente->clie_email);

		// Sets the url used by PagSeguro for redirect user after ends checkout process
		$paymentRequest->setRedirectUrl("http://leadcontrolbgp.com.br/site");
                
                 try
                    {
                            //$credentials = new PagSeguroAccountCredentials("your@email.com", "your_token_here");
                            $credentials = PagSeguroConfig::getAccountCredentials();
                            // Register this payment request in PagSeguro, to obtain the payment URL for redirect your customer.
                            $url = $paymentRequest->register($credentials);
                            $codigo_pagseguro = substr($url, strpos($url, "code=")+5);
                            $now = date("Y-m-d H:i:s");
                            
                            //crio a transação na tabela vd_transacao
                            $crud_vd_transacao = new crud('vd_transacao');  // instancia classe com as operaçoes crud, passando o nome da tabela como parametro
                            if($crud_vd_transacao->inserir("trans_data_criacao,trans_data_confirmacao, trans_codigo_pagseguro, trans_status, trans_total, trans_url, clie_id, plan_id",
                                                        "'$now','NULL','$codigo_pagseguro','1','$plano->plan_valor','$url',$cliente->clie_id,$plano->plan_id")){
                            
                            //atualiza o trans_id da tabela vd_licenca
                            $crud_licenca = new crud('vd_licenca'); // instancia classe com as operaçoes crud, passando o nome da tabela como parametro
                            $crud_licenca->atualizar("trans_id=".$trans_id, "licen_id=".$_POST['licen_id']); //atualiza licença
                            }else{
                                echo "Não registrou a transação<br>";
                                echo "trans_data_criacao,trans_data_confirmacao, trans_codigo_pagseguro, trans_status, trans_total, trans_url, clie_id, plan_id".
                                                        "'$now','NULL','$codigo_pagseguro','1','$plano->plan_valor','$url',$cliente->clie_id,$plano->plan_id";
                                exit;
                            }
                            
                            
                    }
                    catch (PagSeguroServiceException $e)
                    {
                            die($e->getMessage());
                            echo "A transação não foi realizada. Tente novamente  ):";
                    }
                
            }//****************** encerra aqui o PaymentRequest do cron ***********//
	}

	public static function redirectPaymentUrl($url)
	{
		if ($url) {
			echo "<p>Redirecionando ao PagSeguro... AGUARDE</p>";
//			echo "<p>URL do pagamento: <strong>$url</strong></p>";
//			echo "<p><a title=\"URL do pagamento\" href=\"$url\">Ir para URL do pagamento.</a></p>";
                        echo "<META http-equiv=\"refresh\" content=\"0;URL=$url\"> ";
		}
	}
       
}

createPaymentRequest::main();
?>
<?php 
@$con->disconnect(); // fecha conexao com o banco ?>